package impl

import (
	"vblog/apps/user"
	"vblog/conf"
	"vblog/ioc"

	"gorm.io/gorm"
)

func init() {
	ioc.Controller.Registry(user.AppName, &UserServiceImpl{})

	// fmt.Println("User Impl Init")
	// fmt.Printf("%s, %v", user.AppName, ioc.Controller.Get(user.AppName).(user.Service))
}

// //T is a struct
// var _ I = T{}       // Verify that T implements I.
// var _ I = (*T)(nil) // Verify that *T implements I.

// var ctx = context.Background()

var _ user.Service = &UserServiceImpl{}
var _ ioc.Object = &UserServiceImpl{}

type UserServiceImpl struct {
	db *gorm.DB
}

func (s *UserServiceImpl) Init() error {
	s.db = conf.C().MySQL.GetDB()
	return nil
}

// // func
// func ServiceImpl() *serviceImpl {
// 	return &serviceImpl{
// 		db: conf.C().MySQL.GetDB(),
// 	}
// }

func (s *UserServiceImpl) UserModel() *gorm.DB {
	// c.db.Model(&user.User{})
	return s.db.Model(&user.User{})

}
